{% csrf_token %}
From Data
有出現csrfmiddlewaretoken:
欄位,而後面是雜湊值,這代表CSRF的欄位。settings.py
註解如下圖的程式碼。開始前,先給個大補貼:關於path與url還不熟悉的朋友,可以參考
BY
大第十屆鐵人賽的文章:,連結如下:
- 關於url:Day4 : 打造Apps跟Django say hello!
- 關於path:Day13 : path & re_path vs. url
黑修斯著重在後續的介面測試,所以前置作業勞煩各位讀者去survey一下啦。
HelloWord\urls.py
路徑下修改程式碼如下圖:
sign\urls.py
路徑下修改程式碼如下圖:
sign\views.py
路徑下新增程式碼:
-程式碼如下:
def login_page(request):
if request.method == 'POST':
id = request.POST.get('id','')
password = request.POST.get('password','')
if id == 'admin' and password == '12345678':
return HttpResponse('登錄成功')
else:
return render(request,"index.html",{'error':'帳號或密碼輸入錯誤'})
到路徑 http://127.0.0.1:8000/sign
測試登錄頁面
登錄成功測試:
登錄失敗測試:
您好我想請教,我按照您的方法製作一個簡易的form傳輸功能,測試了get的確會把值顯示在網址那邊,但post的時候值卻好像沒有順利傳輸出去,只是不斷刷新index請問我有哪個步驟做錯了。
以下是我的程式
# views.py
from django.shortcuts import render
from django.template import loader
from django.http import HttpResponse # impoty HttpResponse套件用於迴船資訊
# Create your views here.
def index(request):
# return HttpResponse("Hello Djengo") #要回傳的東西
# template = loader.get_template('index.html')
# return HttpResponse(template.render())
return render(request, 'index.html')
def login_page(request):
if request.method == "POST":
id = request.method.POST.get('id','')
password = request.method.POST.get('password','')
if id == 'admin' and password =='1234':
return HttpResponse('登入成功')
else:
return render(request,'index.html',{'error ':'帳號密碼錯誤'})
# index.html
<form method="POST" action="login_page/">
{{form}}
<input type="text" name="id" placeholder="請輸入帳號"><br>
<input type="text" name="password" placeholder="請輸入密碼"><br>
<button id="btn" type="submit" name="button">login</button>
{% csrf_token %}
</form>
# app urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name = 'index'),
path('login_page/', views.login_page, name = 'login_page')
]